package com.liuyz.outputstream_;

import com.liuyz.Dog;
import org.junit.Test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class 对象字节输出流 {

    // 写入对象到文件中
    @Test
    public void write_1() {
        // 存储对象的文件路径（该文件的后缀无所谓，其内容格式是按照对象流的格式保存的）
        String path = "d:\\data.dat";
        Dog dog = new Dog("小黄", 8);
        ObjectOutputStream outputStream = null;
        try {
            // 构建对象输出流对象
            outputStream = new ObjectOutputStream(new FileOutputStream(path));
            // 写入数据时是有顺序的，因此在读取的时候也是要按照顺序读取
            // 将整数写入到文件
            outputStream.writeInt(100);
            // 将布尔写入到文件
            outputStream.writeBoolean(true);
            // 将字符写入到文件
            outputStream.writeChar('a');
            // 将小数值写入到文件
            outputStream.writeDouble(3.14);
            // 将字符串写入到文件
            outputStream.writeUTF("一只狗");
            // 将对象写入的到文件（该对象必须实现序列化接口）
            outputStream.writeObject(dog);
            outputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (null != outputStream) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}
